package com.itbaizhan.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/*作用：标记控制器，将控制器交给Spring容器管理。
位置：类上方*/
@Controller
/*@RequestMapping
作用：给控制器方法设置请求路径
位置：方法或类上方。用于类上，表示类中的所有控制器方法都是以该地址作为
父路径。
属性：
value/path:请求路径
method:指定请求方式
params:规定必须发送的请求参数
headers:规定请求必须包含的请求头*/
@RequestMapping("/c3")
public class MyController3 {

    //子路径  与上面类的路径合在一起才是完整的路径
    //   /c3/annotation  (不可以发送post请求)
    // @RequestMapping(path = "/annotation",method = RequestMethod.POST)
    @RequestMapping(path = "/annotation1",
                    method = {RequestMethod.GET,RequestMethod.POST},
                   params = {"name"},
                   headers = {"User-agent"})
    public String annotation1(String name){
        System.out.println(name);
        return "baizhan";
    }

      /*@RequestParam
    *作用：在控制器方法中获取请求参数
位置：方法参数前
属性：
name：指定请求参数名称
defaultValue： 为参数
required：设置是否是必须要传入的参数 */
    /*请求URL的写法：http://localhost:8080/c3/annotation2?name=bz*/
      /*请求参数名与方法参数名不一致时，可以用name属性指定参数名，设置默认值为sz,不是必须的参数*/
    @RequestMapping("/annotation2")
    public String annotation2(@RequestParam(name = "name",defaultValue = "sz",required = false) String username){
        System.out.println(username);
        return "baizhan";
    }

    /*@RequestHeader
作用：在控制器方法中获取请求头数据
位置：方法参数前

@CookieValue
作用：在控制器方法中获取Cookie数据 (即是sessionId)
位置：方法参数前*/
    @RequestMapping("/annotation3")
    public String annotation3(@RequestHeader("User-Agent") String useragent,
                              @CookieValue("JSESSIONID") String jsessionid){
        System.out.println(useragent);
        System.out.println(jsessionid);
        return "baizhan";
    }
}
